home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_08_10 / 8n10032b < prev    next >
Text File  |  1990-06-08  |  4KB  |  108 lines

  1. Listing 2: transact.h
  2.  
  3.  
  4. /*************************
  5. File:    TRANSACT.H
  6. Created
  7. By:        Russell Cook
  8. *************************/
  9.  
  10. #ifndef _TRANSACT_H_
  11. #define _TRANSACT_H_
  12.  
  13. #define FHANDLE    int
  14.  
  15. #define BADFHANDLE    ((FHANDLE)-1)
  16.  
  17. FHANDLE FARFNCT VFOpen( char FAR *,    /* fully qualified data file name */\
  18.                         int,        /* open flags (O_RDONLY...) */\
  19.                         int            /* permissions */\
  20.                         );
  21. BOOL FARFNCT VFClose( FHANDLE    /* from VFOpen() */ );
  22.  
  23. FHANDLE FARFNCT OpenTransact(    char FAR *,    /* fully qualified log name */\
  24.                                 BOOL        /* operation flags */\
  25.                             );
  26. BOOL FARFNCT CloseTransact(    FHANDLE    /* from TransactOpen() */ );
  27. BOOL FARFNCT DeleteTransactionFile(    \
  28.                     char FAR *    /* name of transaction file */\
  29.                     );
  30. BOOL FARFNCT RollBack(    char FAR *    /* fully qualified log name */\
  31.                     );
  32.  
  33.     /* transaction log file type specifiers */
  34. #define NORMAL_TRANS    ((BOOL)1)
  35. #define DEL_ON_CLOSE    ((BOOL)(NORMAL_TRANS | 2 ))
  36.  
  37. BOOL FARFNCT BeginTransaction(    FHANDLE,    /* from VFOpen() */\
  38.                                 FHANDLE        /* from TransactOpen() */\
  39.                                 );
  40. BOOL FARFNCT EndTransaction(    FHANDLE,    /* from VFOpen() */\
  41.                                 FHANDLE        /* from TransactOpen() */\
  42.                                 );
  43.  
  44. int FARFNCT VFRead(    FHANDLE,        /* from VFOpen() */\
  45.                     VOID FAR *,        /* buffer to be filled */\
  46.                     unsigned int    /* # bytes to be read */\
  47.                     );
  48. int FARFNCT VFWrite(    FHANDLE,        /* from VFOpen() */\
  49.                         VOID FAR *,        /* buffer to be written */\
  50.                         unsigned int    /* # of bytes to be written */\
  51.                         );
  52.  
  53. long FARFNCT VFLSeek(    FHANDLE,        /* from VFOpen() */\
  54.                         long,            /* # of bytes to seek */\
  55.                         int                /* location from which to seek */\
  56.                         );
  57. long FARFNCT VFTell(    FHANDLE    /* from VFOpen() */    );
  58.  
  59. BOOL FARFNCT VFLocking(    FHANDLE,        /* from VFOpen() */\
  60.                         int,            /* type of lock desired */\
  61.                         long            /* # of bytes to lock */\
  62.                         );
  63. #define SHARED_LOCK        ((int) 1)
  64. #define EXCLUSIVE_LOCK    ((int) 2)
  65. #define UNLOCK_BYTES    ((int) 4)
  66.  
  67. BOOL FARFNCT VFChangeSize(    FHANDLE,    /* from VFOpen() */\
  68.                             long        /* new file size */\
  69.                             );
  70.  
  71. BOOL FARFNCT VFStat(    FHANDLE,            /* from VFOpen() */\
  72.                         struct stat NEAR *    /* struct to be filled */\
  73.                         );
  74.  
  75. int FARFNCT VFLastError( void );
  76.  
  77.  
  78. /* The following error codes may be returned by VFLastError() */
  79. #define ENONE        0        /* no error */
  80. #define EHANDLE        1        /* FHANDLE bad */
  81. #define ECLOSED        2        /* FHANDLE references a closed file */
  82. #define ENOTUSER    3        /* specified file is not a user file */
  83. #define EACTIVE        4        /* unmatched BeginTransaction() */
  84. #define ECLOSE        5        /* system file close failed */
  85. #define EUSER        6        /* specified file is a user file */
  86. #define EUNLINK        7        /* system file unlink failed */
  87. #define ENOTTRACK    8        /* handles specify non-tracking files */
  88. #define ESEEK        9        /* system file seek failed */
  89. #define EOFFSET        10        /* pos. offset from EOF */
  90. #define EPOS        11        /* file position < 0L */
  91. #define ELTYPE        12        /* bad lock type */
  92. #define ELOCK        13        /* system lock function failed */
  93. #define ECHSIZ        14        /* system file size change function failed */
  94. #define EFSTAT        15        /* system file status function failed */
  95. #define EMALLOC        16        /* system memory allocation failed */
  96. #define EREALLOC    17        /* system memory reallocation failed */
  97. #define ESTRDUP        18        /* system string duplication failed */
  98. #define EOPEN        19        /* system file open failed */
  99. #define ETTYPE        20        /* transaction file type is invalid */
  100. #define EREAD        21        /* system file read failed */
  101. #define ENOTCLOSED    22        /* deleting non-closed file not permitted */
  102. #define EWRITE        23        /* system file write failed */
  103. #define ETRACK        24        /* failure storing transaction record */
  104. #define EDELTA        25        /* file size change too great for tracking */
  105. #define EROLL        26        /* failure during transaction log rollback */
  106.  
  107. #endif    /* _TRANSACT_H_ */
  108.